
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Collections.Specialized;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Caching;
using System.Web.SessionState;
using System.Web.Security;
using System.Web.Profile;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//
// DotNetNuke - http://www.dotnetnuke.com
// Copyright (c) 2002-2010
// by DotNetNuke Corporation
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 
// documentation files (the "Software"), to deal in the Software without restriction, including without limitation 
// the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and 
// to permit persons to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or substantial portions 
// of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
// TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 
// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
// DEALINGS IN THE SOFTWARE.
//

using DotNetNuke.Entities.Modules;
using DotNetNuke.Common.Utilities;

namespace DotNetNuke.Security.Permissions
{

	/// -----------------------------------------------------------------------------
	/// Project	 : DotNetNuke
	/// Namespace: DotNetNuke.Security.Permissions
	/// Class	 : DesktopModulePermissionInfo
	/// -----------------------------------------------------------------------------
	/// <summary>
	/// DesktopModulePermissionInfo provides the Entity Layer for DesktopModulePermissionInfo 
	/// Permissions
	/// </summary>
	/// <history>
	/// </history>
	/// -----------------------------------------------------------------------------
	[Serializable()]
	public class WorkflowStatePermissionInfo : PermissionInfoBase, IHydratable
	{

		#region "Private Members"

		// local property declarations
		int _WorkflowStatePermissionID;

		int _StateID;
		#endregion

		#region "Constructors"

		/// -----------------------------------------------------------------------------
		/// <summary>
		/// Constructs a new WorkflowStatePermissionInfo
		/// </summary>
		/// <history>
		/// </history>
		/// -----------------------------------------------------------------------------
		public WorkflowStatePermissionInfo() : base()
		{
			_WorkflowStatePermissionID = Null.NullInteger;
			_StateID = Null.NullInteger;
		}
		//New

		/// -----------------------------------------------------------------------------
		/// <summary>
		/// Constructs a new WorkflowStatePermissionInfo
		/// </summary>
		/// <param name="permission">A PermissionInfo object</param>
		/// <history>
		/// </history>
		/// -----------------------------------------------------------------------------
		public WorkflowStatePermissionInfo(PermissionInfo permission) : this()
		{

			this.ModuleDefID = permission.ModuleDefID;
			this.PermissionCode = permission.PermissionCode;
			this.PermissionID = permission.PermissionID;
			this.PermissionKey = permission.PermissionKey;
			this.PermissionName = permission.PermissionName;
		}

		#endregion

		#region "Public Properties"

		/// -----------------------------------------------------------------------------
		/// <summary>
		/// Gets and sets the WorkflowState Permission ID
		/// </summary>
		/// <returns>An Integer</returns>
		/// <history>
		/// </history>
		/// -----------------------------------------------------------------------------
		public int WorkflowStatePermissionID {
			get { return _WorkflowStatePermissionID; }
			set { _WorkflowStatePermissionID = value; }
		}

		/// -----------------------------------------------------------------------------
		/// <summary>
		/// Gets and sets the State ID
		/// </summary>
		/// <returns>An Integer</returns>
		/// <history>
		/// </history>
		/// -----------------------------------------------------------------------------
		public int StateID {
			get { return _StateID; }
			set { _StateID = value; }
		}

		#endregion

		#region "Public Methods"

		/// -----------------------------------------------------------------------------
		/// <summary>
		/// Compares if two WorkflowStatePermissionInfo objects are equivalent/equal
		/// </summary>
		/// <param name="obj">a WorkflowStatePermissionObject</param>
		/// <returns>true if the permissions being passed represents the same permission
		/// in the current object
		/// </returns>
		/// <remarks>
		/// This function is needed to prevent adding duplicates to the WorkflowStatePermissionCollection.
		/// WorkflowStatePermissionCollection.Contains will use this method to check if a given permission
		/// is already included in the collection.
		/// </remarks>
		/// <history>
		/// </history>
		/// -----------------------------------------------------------------------------
		public override bool Equals(object obj)
		{
			if (obj == null || (!object.ReferenceEquals(this.GetType(), obj.GetType()))) {
				return false;
			}
			WorkflowStatePermissionInfo perm = (WorkflowStatePermissionInfo)obj;
			return (this.AllowAccess == perm.AllowAccess) && (this.StateID == perm.StateID) && (this.RoleID == perm.RoleID) && (this.PermissionID == perm.PermissionID);
		}

		#endregion

		#region "IHydratable Implementation"

		/// -----------------------------------------------------------------------------
		/// <summary>
		/// Fills a WorkflowStatePermissionInfo from a Data Reader
		/// </summary>
		/// <param name="dr">The Data Reader to use</param>
		/// <history>
		/// </history>
		/// -----------------------------------------------------------------------------

		public void Fill(System.Data.IDataReader dr)
		{
			//Call the base classes fill method to populate base class proeprties
			base.FillInternal(dr);

			WorkflowStatePermissionID = Null.SetNullInteger(dr["WorkflowStatePermissionID"]);
			StateID = Null.SetNullInteger(dr["StateID"]);
		}

		/// -----------------------------------------------------------------------------
		/// <summary>
		/// Gets and sets the Key ID
		/// </summary>
		/// <returns>An Integer</returns>
		/// <history>
		/// </history>
		/// -----------------------------------------------------------------------------
		public int KeyID {
			get { return WorkflowStatePermissionID; }
			set { WorkflowStatePermissionID = value; }
		}

		#endregion

	}

}
